From 3a2080259e03a61a22b4b2e99c1b4ed56ead108f Mon Sep 17 00:00:00 2001 From: "emellor@ewan" Date: Tue, 27 Sep 2005 14:49:31 +0100 Subject: [PATCH] Remove DBMap etc from XendDomainInfo, moving the handling of the domain root and VM root totally into XendDomainInfo. The DBMap stuff was all cruft, following the move to xstransact. Removing it may also help those suffering from poor start-up times caused by a large store. Signed-off-by: Ewan Mellor --- tools/python/xen/xend/XendDomain.py | 18 ++---------------- tools/python/xen/xend/XendDomainInfo.py | 22 +++++++++------------- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index 54faa6e33d..57b127f153 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -34,7 +34,6 @@ from xen.xend.XendError import XendError from xen.xend.XendLogging import log from xen.xend import scheduler from xen.xend.server import relocate -from xen.xend.xenstore import XenNode, DBMap from xen.xend.xenstore.xstransact import xstransact @@ -68,8 +67,6 @@ class XendDomain: # So we stuff the XendDomain instance (self) into xroot's components. xroot.add_component("xen.xend.XendDomain", self) self.domains = XendDomainDict() - self.vmroot = "/domain" - self.dbmap = DBMap(db=XenNode(self.vmroot)) self.watchReleaseDomain() self.refresh() self.dom0_setup() @@ -174,17 +171,6 @@ class XendDomain: if notify: eserver.inject('xend.domain.died', [info.getName(), info.getDomid()]) - # XXX this should not be needed - for domdb in self.dbmap.values(): - if not domdb.has_key("xend"): - continue - db = domdb.addChild("xend") - try: - domid = int(domdb["domid"].getData()) - except: - domid = None - if (domid is None) or (domid == id): - domdb.delete() def refresh(self): @@ -230,7 +216,7 @@ class XendDomain: @param config: configuration @return: domain """ - dominfo = XendDomainInfo.create(self.dbmap.getPath(), config) + dominfo = XendDomainInfo.create(config) self._add_domain(dominfo) return dominfo @@ -247,7 +233,7 @@ class XendDomain: nested = sxp.child_value(config, 'config') if nested: config = nested - return XendDomainInfo.restore(self.dbmap.getPath(), config) + return XendDomainInfo.restore(config) def domain_restore(self, src, progress=False): """Restore a domain from file. diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index a3d6739bec..e2148f9f9a 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -154,17 +154,16 @@ class XendDomainInfo: MINIMUM_RESTART_TIME = 20 - def create(cls, dompath, config): + def create(cls, config): """Create a VM from a configuration. - @param dompath: The path to all domain information @param config configuration @raise: VmError for invalid configuration """ - log.debug("XendDomainInfo.create(%s, ...)", dompath) + log.debug("XendDomainInfo.create(...)") - vm = cls(getUuid(), dompath, cls.parseConfig(config)) + vm = cls(getUuid(), cls.parseConfig(config)) vm.construct() vm.refreshShutdown() return vm @@ -192,30 +191,27 @@ class XendDomainInfo: raise XendError( 'No vm/uuid path in store for existing domain %d' % domid) - dompath = "/".join(dompath.split("/")[0:-1]) except Exception, exn: log.warn(str(exn)) - dompath = DOMROOT uuid = getUuid() log.info("Recreating domain %d, uuid %s", domid, uuid) - vm = cls(uuid, dompath, xeninfo, domid, True) + vm = cls(uuid, xeninfo, domid, True) vm.refreshShutdown(xeninfo) return vm recreate = classmethod(recreate) - def restore(cls, dompath, config, uuid = None): + def restore(cls, config, uuid = None): """Create a domain and a VM object to do a restore. - @param dompath: The path to all domain information @param config: domain configuration @param uuid: uuid to use """ - log.debug("XendDomainInfo.restore(%s, %s, %s)", dompath, config, uuid) + log.debug("XendDomainInfo.restore(%s, %s)", config, uuid) if not uuid: uuid = getUuid() @@ -225,7 +221,7 @@ class XendDomainInfo: except TypeError, exn: raise VmError('Invalid ssidref in config: %s' % exn) - vm = cls(uuid, dompath, cls.parseConfig(config), + vm = cls(uuid, cls.parseConfig(config), xc.domain_create(ssidref = ssidref)) vm.create_channel() vm.configure() @@ -293,12 +289,12 @@ class XendDomainInfo: parseConfig = classmethod(parseConfig) - def __init__(self, uuid, parentpath, info, domid = None, augment = False): + def __init__(self, uuid, info, domid = None, augment = False): self.uuid = uuid self.info = info - self.path = parentpath + "/" + uuid + self.path = DOMROOT + "/" + uuid if domid: self.domid = domid -- 2.30.2